home *** CD-ROM | disk | FTP | other *** search
- package com.sun.xml.util;
-
- import java.io.InputStream;
- import java.text.FieldPosition;
- import java.text.MessageFormat;
- import java.util.Date;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.MissingResourceException;
- import java.util.ResourceBundle;
-
- public abstract class MessageCatalog {
- private String bundleName;
- private Hashtable cache;
-
- protected MessageCatalog(Class var1) {
- this(var1, "Messages");
- }
-
- private MessageCatalog(Class var1, String var2) {
- this.cache = new Hashtable(5);
- this.bundleName = var1.getName();
- int var3 = this.bundleName.lastIndexOf(46);
- if (var3 == -1) {
- this.bundleName = "";
- } else {
- this.bundleName = this.bundleName.substring(0, var3) + ".";
- }
-
- this.bundleName = this.bundleName + "resources." + var2;
- }
-
- private String[] canonicalize(String[] var1) {
- boolean var2 = false;
- int var3 = 0;
- if (var1 == null) {
- return var1;
- } else {
- for(int var4 = 0; var4 < var1.length; ++var4) {
- String var5 = var1[var4];
- int var6 = var5.length();
- if (var6 != 2 && var6 != 5) {
- if (!var2) {
- var1 = (String[])var1.clone();
- var2 = true;
- }
-
- var1[var4] = null;
- ++var3;
- } else if (var6 == 2) {
- var5 = var5.toLowerCase();
- if (var5 != var1[var4]) {
- if (!var2) {
- var1 = (String[])var1.clone();
- var2 = true;
- }
-
- var1[var4] = var5;
- }
- } else {
- char[] var7 = new char[]{Character.toLowerCase(var5.charAt(0)), Character.toLowerCase(var5.charAt(1)), '_', Character.toUpperCase(var5.charAt(3)), Character.toUpperCase(var5.charAt(4))};
- if (!var2) {
- var1 = (String[])var1.clone();
- var2 = true;
- }
-
- var1[var4] = new String(var7);
- }
- }
-
- if (var3 != 0) {
- String[] var10 = new String[var1.length - var3];
- int var11 = 0;
-
- for(int var8 = 0; var11 < var10.length; ++var11) {
- while(var1[var11 + var8] == null) {
- ++var8;
- }
-
- var10[var11] = var1[var11 + var8];
- }
-
- var1 = var10;
- }
-
- return var1;
- }
- }
-
- public Locale chooseLocale(String[] var1) {
- if ((var1 = this.canonicalize(var1)) != null) {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- if (this.isLocaleSupported(var1[var2])) {
- return this.getLocale(var1[var2]);
- }
- }
- }
-
- return null;
- }
-
- private Locale getLocale(String var1) {
- int var4 = var1.indexOf(95);
- String var2;
- String var3;
- if (var4 == -1) {
- if (var1.equals("de")) {
- return Locale.GERMAN;
- }
-
- if (var1.equals("en")) {
- return Locale.ENGLISH;
- }
-
- if (var1.equals("fr")) {
- return Locale.FRENCH;
- }
-
- if (var1.equals("it")) {
- return Locale.ITALIAN;
- }
-
- if (var1.equals("ja")) {
- return Locale.JAPANESE;
- }
-
- if (var1.equals("ko")) {
- return Locale.KOREAN;
- }
-
- if (var1.equals("zh")) {
- return Locale.CHINESE;
- }
-
- var2 = var1;
- var3 = "";
- } else {
- if (var1.equals("zh_CN")) {
- return Locale.SIMPLIFIED_CHINESE;
- }
-
- if (var1.equals("zh_TW")) {
- return Locale.TRADITIONAL_CHINESE;
- }
-
- var2 = var1.substring(0, var4);
- var3 = var1.substring(var4 + 1);
- }
-
- return new Locale(var2, var3);
- }
-
- public String getMessage(Locale var1, String var2) {
- if (var1 == null) {
- var1 = Locale.getDefault();
- }
-
- try {
- ResourceBundle var3 = ResourceBundle.getBundle(this.bundleName, var1);
- return var3.getString(var2);
- } catch (MissingResourceException var4) {
- return this.packagePrefix(var2);
- }
- }
-
- public String getMessage(Locale var1, String var2, Object[] var3) {
- if (var3 == null) {
- return this.getMessage(var1, var2);
- } else {
- for(int var4 = 0; var4 < var3.length; ++var4) {
- if (!(var3[var4] instanceof String) && !(var3[var4] instanceof Number) && !(var3[var4] instanceof Date)) {
- if (var3[var4] == null) {
- var3[var4] = "(null)";
- } else {
- var3[var4] = var3[var4].toString();
- }
- }
- }
-
- if (var1 == null) {
- var1 = Locale.getDefault();
- }
-
- MessageFormat var6;
- try {
- ResourceBundle var5 = ResourceBundle.getBundle(this.bundleName, var1);
- var6 = new MessageFormat(var5.getString(var2));
- } catch (MissingResourceException var9) {
- String var7 = this.packagePrefix(var2);
-
- for(int var8 = 0; var8 < var3.length; ++var8) {
- var7 = var7 + ' ';
- var7 = var7 + var3[var8];
- }
-
- return var7;
- }
-
- var6.setLocale(var1);
- StringBuffer var11 = new StringBuffer();
- var11 = var6.format(var3, var11, new FieldPosition(0));
- return var11.toString();
- }
- }
-
- public boolean isLocaleSupported(String var1) {
- Boolean var2 = (Boolean)this.cache.get(var1);
- if (var2 != null) {
- return var2;
- } else {
- ClassLoader var3 = null;
-
- while(true) {
- String var4 = this.bundleName + "_" + var1;
-
- try {
- Class.forName(var4);
- this.cache.put(var1, Boolean.TRUE);
- return true;
- } catch (Exception var7) {
- if (var3 == null) {
- var3 = this.getClass().getClassLoader();
- }
-
- var4 = var4.replace('.', '/');
- var4 = var4 + ".properties";
- InputStream var5;
- if (var3 == null) {
- var5 = ClassLoader.getSystemResourceAsStream(var4);
- } else {
- var5 = var3.getResourceAsStream(var4);
- }
-
- if (var5 != null) {
- this.cache.put(var1, Boolean.TRUE);
- return true;
- }
-
- int var6 = var1.indexOf(95);
- if (var6 <= 0) {
- this.cache.put(var1, Boolean.FALSE);
- return false;
- }
-
- var1 = var1.substring(0, var6);
- }
- }
- }
- }
-
- private String packagePrefix(String var1) {
- String var2 = this.getClass().getName();
- int var3 = var2.lastIndexOf(46);
- if (var3 == -1) {
- var2 = "";
- } else {
- var2 = var2.substring(0, var3);
- }
-
- return var2 + '/' + var1;
- }
- }
-